#!/bin/sh
# PCP QA Test No. 595
# concurent archive access stress test ... builds on qa/588 and qa/590
# and uses src/multithread12
#
# Copyright (c) 2017 Ken McDonell.  All Rights Reserved.
#

seq=`basename $0`
echo "QA output created by $seq"

# get standard environment, filters and checks
. ./common.product
. ./common.filter
. ./common.check

_get_libpcp_config
$multi_threaded || _notrun "No libpcp threading support"

_cleanup()
{
    cd $here
    $sudo rm -rf $tmp $tmp.*
    $sudo rm -f /tmp/thread_?.out
}

_report()
{
    for tid in A B C D
    do
	echo
	echo "=== Thread $tid $1 ==="
	if [ -f /tmp/thread_$tid.out ]
	then
	    cat /tmp/thread_$tid.out
	else
	    echo "Error: /tmp/thread_$tid.out not created."
	fi
    done
}

status=1	# failure is the default!
$sudo rm -rf $tmp $tmp.* $seq.full
trap "_cleanup; exit \$status" 0 1 2 3 15

# real QA test starts here
export PCP_DERIVED_CONFIG=

for arch in archives/ok-foo archives/ok-mv-foo archives/multi archives/bozo-20170904
do
    case $arch
    in
	archives/multi|archives/bozo-20170904)
	    metric_B=kernel.percpu.cpu.user
	    metric_C=network.interface.out.packets
	    ;;
	*)
	    metric_B=sample.bin
	    metric_C=sample.colour
	    ;;
    esac

    $sudo rm -f /tmp/thread_?.out
    src/multithread12 -a 5 -b 5 -c 5 -d 5 -B $metric_B -C $metric_C $arch
    _report $arch

done

# success, all done
status=0
exit
